/**
* @author Lourdes Sanchez
* @author Eugenia Jose
* @author Esteban Castro
* @author Carlos Fernandez
* @author Fernando Turon
* @version 1.0 01-05-12
*
 * 
* La clase PantallaPruebasEnClasificacion se refiere a la capa de negocio relativa al sistema de Pruebas en estado de Clasificacion de la aplicación
*
* @see ....
*/
package edu.uoc.tds.pec4.swingx;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

import edu.uoc.tds.pec4.common.RemotoInterface;
import edu.uoc.tds.pec4.i18n.GestorIdiomas;
import edu.uoc.tds.pec4.model.Prueba;
import edu.uoc.tds.pec4.model.Ronda;
import edu.uoc.tds.pec4.model.TipoEstado;
import edu.uoc.tds.pec4.model.TipoRonda;
import edu.uoc.tds.pec4.model.Usuario;

/**
 *
 * @author Fernando
 */
public class PantallaPruebasEnClasificacion extends javax.swing.JDialog {;
    //Definicion de los variables de la clase
    private PantallaMenuPrincipal pantallaMenuPrincipal;
    private RemotoInterface remoto;

    private List<Prueba> listaPruebasEnClasificacion;

    //Fernando
    //Constructor de la clase con dos parametros: el nombre del formulario desde el que es llamado y una variable booleana que se refiere al caracter modal del formulario
    public PantallaPruebasEnClasificacion(PantallaMenuPrincipal pantallaMenuPrincipal, boolean modal) {
        //Asignacion de valores a los variables de la clase
        this.pantallaMenuPrincipal = pantallaMenuPrincipal;
        this.remoto = pantallaMenuPrincipal.getRemoto();
        this.listaPruebasEnClasificacion = new ArrayList<Prueba>();
        
        initComponents();
        myInitComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBarraHerramientas = new javax.swing.JToolBar();
        btnExit = new javax.swing.JButton();
        jPanelPruebas = new javax.swing.JPanel();
        jScrollPanePruebas = new javax.swing.JScrollPane();
        jtablePruebas = new javax.swing.JTable();
        jbtnCambiarAPruebaEnCompeticion = new javax.swing.JButton();
        jmnuBarPruebas = new javax.swing.JMenuBar();
        jmnuArchivo = new javax.swing.JMenu();
        jmnuSalir = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("eOlympics - Pruebas en Período de Clasificación");

        jToolBarraHerramientas.setRollover(true);

        btnExit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/Exit.png"))); // NOI18N
        btnExit.setToolTipText("Salir");
        btnExit.setFocusable(false);
        btnExit.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnExit.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnExit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExitsalir(evt);
            }
        });
        jToolBarraHerramientas.add(btnExit);

        jtablePruebas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Identificador", "Prueba", "Estado de la Prueba", "Num de Plazas", "Num Inscritos", "Ronda Eliminatoria"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPanePruebas.setViewportView(jtablePruebas);

        javax.swing.GroupLayout jPanelPruebasLayout = new javax.swing.GroupLayout(jPanelPruebas);
        jPanelPruebas.setLayout(jPanelPruebasLayout);
        jPanelPruebasLayout.setHorizontalGroup(
            jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 662, Short.MAX_VALUE)
            .addGroup(jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelPruebasLayout.createSequentialGroup()
                    .addComponent(jScrollPanePruebas, javax.swing.GroupLayout.PREFERRED_SIZE, 652, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
        jPanelPruebasLayout.setVerticalGroup(
            jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 336, Short.MAX_VALUE)
            .addGroup(jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPanePruebas, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE))
        );

        jbtnCambiarAPruebaEnCompeticion.setText("Cambiar a Prueba en Competicion");
        jbtnCambiarAPruebaEnCompeticion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtnCambiarAPruebaEnCompeticionActionPerformed(evt);
            }
        });

        jmnuArchivo.setText("Archivo");
        jmnuArchivo.setFont(new java.awt.Font("Tahoma", 1, 11));

        jmnuSalir.setText("Salir");
        jmnuSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmnuSalirActionPerformed(evt);
            }
        });
        jmnuArchivo.add(jmnuSalir);

        jmnuBarPruebas.add(jmnuArchivo);

        setJMenuBar(jmnuBarPruebas);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBarraHerramientas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(618, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(459, Short.MAX_VALUE)
                .addComponent(jbtnCambiarAPruebaEnCompeticion)
                .addContainerGap())
            .addComponent(jPanelPruebas, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBarraHerramientas, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelPruebas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jbtnCambiarAPruebaEnCompeticion)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    //Fernando
    //Metodo asociado al evento de la opcion de salir
    private void btnExitsalir(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitsalir
        // TODO add your handling code here:
        this.setVisible(false);
}//GEN-LAST:event_btnExitsalir
    //Fernando
    //Metodo asociado al evento del boton cambiar A Prueba en Competicion
    private void jbtnCambiarAPruebaEnCompeticionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnCambiarAPruebaEnCompeticionActionPerformed
        this.cambiarAPruebaEnCompeticion();
}//GEN-LAST:event_jbtnCambiarAPruebaEnCompeticionActionPerformed

    private void jmnuSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmnuSalirActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
    }//GEN-LAST:event_jmnuSalirActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                PantallaPruebas dialog = null;
                try {
                    dialog = new PantallaPruebas(new PantallaMenuPrincipal(), true);
                }

                catch (RemoteException exc) {
                    exc.printStackTrace();
                    JOptionPane.showMessageDialog(null, exc.getMessage(), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
                }

                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    //Fernando
    //Metodo para obtener una lista de Pruebas en estado de clasificacion
    private void getListaPruebasEnClasificacion(){
        //En el caso en que se genere una excepcion la capturaremos
        try{
            //Eliminamos el contenido de la lista
            this.listaPruebasEnClasificacion.clear();

            //Definimos dos  listas que rellenaremso una con las pruebas en clasificacion preliminar
            //   y otra con la clasificacion eliminatoria
            List<Prueba> listaPruebasEnClasificacionPreliminar = new ArrayList<Prueba>();
            List<Prueba> listaPruebasEnClasificacionFinal = new ArrayList<Prueba>();

            listaPruebasEnClasificacionPreliminar = this.remoto.getListaPruebasPorEstado(TipoEstado.CLASIFICACION_PRELIMINAR);
            listaPruebasEnClasificacionFinal = this.remoto.getListaPruebasPorEstado(TipoEstado.CLASIFICACION_FINAL);

            //Si la lista temporal de pruebas clasificiatorias NO esta vacia la vamos añadiento a la lista definitiva
            if(!listaPruebasEnClasificacionPreliminar.isEmpty()){
                for(Prueba p: listaPruebasEnClasificacionPreliminar){
                    this.listaPruebasEnClasificacion.add(p);
                }
            }

            //Si la lista temporal de pruebas eliminatorias NO esta vacia la vamos añadiento a la lista definitiva
            if(!listaPruebasEnClasificacionFinal.isEmpty()){
                for(Prueba p: listaPruebasEnClasificacionFinal){
                    this.listaPruebasEnClasificacion.add(p);
                }
            }
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    /**
     * Metodo para rellenar los resultados de la participacion en un jtable sin diferenciar por universidad
     * {pre: la clase ha de estar instanciada previamente y el objeto definido}
     * {post: establece contenidos, la valoracion, de las celdas, informando del nÃºmero de respuestas por cada tipo de pregunta/respuesta}
     */
    private void rellenarTablaPruebas(){
        //SI existe excepcion la lanzaremos para interpretarla posteriormente
        try{
            //Definimos las variables necesarias
            int numeroFilas = 0;
            numeroFilas = this.listaPruebasEnClasificacion.size();

            Object datos[][] = new Object[numeroFilas][6];

            //Nos posicionamos en la primera fila
            int numeroFila = 0;
            for(Prueba prueba: this.listaPruebasEnClasificacion){
                //Inicializamos variables
                int id_prueba;
                String descripcion_prueba;
                String descripcionEstadoPrueba;
                int id_estado_prueba;
                int numero_plazas;
                int numero_inscritos;
                boolean hayRondaEliminatoria = false;

                //Asignamos valores a las variables
                id_prueba = prueba.getId_prueba();
                descripcion_prueba = prueba.getDescripcion_prueba();
                id_estado_prueba = prueba.getId_estado_prueba();
                numero_plazas = prueba.getNumero_plazas();
                descripcionEstadoPrueba = this.remoto.getDescripcionEstadoPrueba(id_estado_prueba);
                numero_inscritos = this.remoto.getNumeroInscritos(id_prueba);

                //Si la es la Clasificacion Final no se evalua la posibilidad de competir
                if(prueba.getId_estado_prueba() == TipoEstado.CLASIFICACION_PRELIMINAR.valor())
                    hayRondaEliminatoria = this.remoto.hayRondaEliminatoria(numero_inscritos);

                //Asignamos valores a las celdas correspondiente
                datos[numeroFila][0] = id_prueba;
                datos[numeroFila][1] = descripcion_prueba;
                datos[numeroFila][2] = descripcionEstadoPrueba;
                datos[numeroFila][3] = numero_plazas;
                datos[numeroFila][4] = numero_inscritos;                
                datos[numeroFila++][5] = hayRondaEliminatoria;
            }

            //Definimos las variables para la cabecera de la tabla
            String textoCabecera1;
            String textoCabecera2;
            String textoCabecera3;
            String textoCabecera4;
            String textoCabecera5;
            String textoCabecera6;

            //Asignamos los valores del Gesto de Idiomas
            textoCabecera1 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera1");
            textoCabecera2 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera2");
            textoCabecera3 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera3");
            textoCabecera4 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera4");
            textoCabecera5 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera5");
            textoCabecera6 = GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.textoCabecera6");

            this.jtablePruebas.setModel(new javax.swing.table.DefaultTableModel(
                datos,

            new String [] {
                textoCabecera1,
                textoCabecera2,
                textoCabecera3,
                textoCabecera4,
                textoCabecera5,
                textoCabecera6
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false

            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
     }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para cambiar el estado a una prueba en Competicion
    private void cambiarAPruebaEnCompeticion(){
        //Declaramos las variables a emplear
        int fila = 0;
        int id_prueba = 0;
        Prueba prueba = null;
        Ronda ronda = null;
        TipoEstado tipoEstado;

        //Recuperamos la fila seleccionada
        fila = this.jtablePruebas.getSelectedRow();

        try {
            //Si la columan 5 de la fila seleccionada es VERDADERO entonces
            if((Boolean) this.jtablePruebas.getValueAt(fila,5)){
                //Recuperamos el id de la prueba de la fila seleccionada y obtenemos el
                //  objeto correspondiente
                id_prueba = (Integer) this.jtablePruebas.getValueAt(fila,0);            
                prueba = this.remoto.getPrueba(id_prueba);

                //Se pregunta si se desea realizar el cambio
                if(JOptionPane.showConfirmDialog(null, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.preguntaCambioACompeticion"), GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.informacion"), JOptionPane.INFORMATION_MESSAGE) == JOptionPane.YES_OPTION){
                    //Si es una clasificacion prelimianar la competicion sera eliminatoria
                    ronda = new Ronda(prueba, TipoRonda.ELIMINATORIA);
                    tipoEstado = TipoEstado.COMPETICION_ELIMINATORIA;

                    //Creamos la Ronda
                    this.actualizarPrueba(prueba, tipoEstado);
                    this.insertarRonda(ronda);
                    //Actualizamos la informnacion
                    this.getListaPruebasEnClasificacion();
                    this.rellenarTablaPruebas();
                    //Insertamos estudiantes en la prueba
                    this.traspasarEstudiantesInscritosClasificatoriaAEliminatoria(ronda);
                }
            }

            //Si la columan 5 de la fila seleccionada es FALSO indica que no se puede pasar a otro estado
            else{
                JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorPruebaEnClasificacionFinal"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
            }
        }
            
        //En el caso en que el valor del idprueba este fuera de rango
        catch(ArrayIndexOutOfBoundsException exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.ElijaUnaPrueba"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para insertar una ronda que se pasa por parametro
    private void insertarRonda(Ronda ronda){
        //En el caso en que sea necesario se lanzara una excpepcion
        try {
            //Declaramos la variable de tipo Prueba a partir del i de prueba pasado en el parametro Ronda
            Prueba prueba;
            prueba = this.remoto.getPrueba(ronda.getId_prueba());

            int tipoRonda;
            tipoRonda = ronda.getId_tipo_ronda();

            //Comprobamos si ya existe esa ronda
            ronda.getId_prueba();
            if (this.remoto.existeRonda(ronda)) {
                JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.crearRonda"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
            }

            //Si no existe procedemos con la insercion de la ronda correspondiente
            else{
                //Insertamos la ronda
                this.remoto.insertarRonda(ronda);
                this.remoto.actualizarPrueba(prueba, TipoEstado.COMPETICION_ELIMINATORIA);
                JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.rondaCreadaSatisfactoriamente"), GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.informacion"), JOptionPane.INFORMATION_MESSAGE);
            }

            //Muestra la pantalla de las rondas para establecer las preguntas, las soluciones y
            //  todos los campos necesarios
            PantallaRondas pantallaRondas = new PantallaRondas(this, true, ronda, this.remoto);
            pantallaRondas.setVisible(true);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para traspasar los estudiantes inscritos en una ronda clasificatoria a estudiantes inscritos en una ronda eliminatoria
    //  que se pasa por parametro
    private void traspasarEstudiantesInscritosClasificatoriaAEliminatoria(Ronda ronda){
        //Definimos una variable de tipo lista para almacenar los estudiantes inscritos en la prueba
        List<Usuario> lista = new ArrayList<Usuario>();

        //Lanzaremos una excepcion si es necesario
        try {
            //Recogemos en uan variable local el TOP de los estudiantes ya valroados en una ronda
            lista = this.remoto.getListaTOPEstudiantesInscritosEnRonda(ronda);
            for(Usuario usuario: lista){
                this.remoto.realizarInscripcionUsuarios(usuario, ronda);
            }
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para actualizar el estado de una prueba que se pasa por parametro y el nuevo tipoEstado
    private void actualizarPrueba(Prueba prueba, TipoEstado tipoEstado){
        //Actualizamos la prueba en el servidor remoto y si hay alguna excepcion la capturaremos mas abajo
        try {
            this.remoto.actualizarPrueba(prueba, tipoEstado);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para inicializar mis componentes
    private void myInitComponents(){
        try {
            this.getListaPruebasEnClasificacion();
            this.rellenarTablaPruebas();

           //Llamando al gestor de idiomas para los menus
            this.jmnuArchivo.setText(GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.MenuArchivo"));
            this.jmnuSalir.setText(GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.MenuArchivoSalir"));

            this.btnExit.setToolTipText(GestorIdiomas.getMessage("btnExit.tooltiptext"));

            this.setTitle(GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.Titulo"));
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch (Exception exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this, GestorIdiomas.getMessage("pantallaPruebasEnClasificacion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnExit;
    private javax.swing.JPanel jPanelPruebas;
    private javax.swing.JScrollPane jScrollPanePruebas;
    private javax.swing.JToolBar jToolBarraHerramientas;
    private javax.swing.JButton jbtnCambiarAPruebaEnCompeticion;
    private javax.swing.JMenu jmnuArchivo;
    private javax.swing.JMenuBar jmnuBarPruebas;
    private javax.swing.JMenuItem jmnuSalir;
    private javax.swing.JTable jtablePruebas;
    // End of variables declaration//GEN-END:variables

}
